package com.qf.service.impl;

import com.qf.dao.UserDao;
import com.qf.dao.impl.UserDaoImpl;
import com.qf.pojo.User;
import com.qf.service.UserService;
import com.qf.utils.Constants;
import com.qf.utils.MD5Utils;
import com.qf.utils.RandomUtils;

/**
 * @author 29125
 * @version V1.0
 * @Project java2203
 * @Package com.qf.service.impl
 * @Description:
 * @Date 2022/5/23 15:50
 */
public class UserServiceImpl implements UserService {

    @Override
    public User login(String userName, String password) {
        //调用dao层方法
        UserDao userDao=new UserDaoImpl();
        User user = userDao.findByUserName(userName);
        //用户非空验证
        if (user==null){
            return null;
        }
        //用户激活判断，没有激活不可登录
        if (!Constants.USER_ACTIVE.equals(user.getStatus())){
            //user中获得的数和激活常量相等
            return null;
        }
        //角色判断为消费者即可登录,是管理员不可登录返回空
        if (Constants.ROLE_ADMIN==user.getRole()){
            return null;
        }
        //md5验证码密文，与数据库中密码的秘文user.getPassword()进行对比，一致则密码正确
        String md5Pwd = MD5Utils.md5(password);
        if (md5Pwd.equals(user.getPassword())){
            return user;
        }
        return null;
    }
    //查询用户名是否存在
    @Override
    public boolean check(String userName) {
        //调用dao层方法
        UserDao userDao=new UserDaoImpl();
        User user = userDao.findByUserName(userName);
        //判断用户名是否存在,不存在注册成功，存在则注册失败
        if (user==null){
            return true;
        }else {
            return false;
        }
    }
    //添加消费者用户
    @Override
    public int createUser(User user) {
        //密码加密
        String md5 = MD5Utils.md5(user.getPassword());
        user.setPassword(md5);
        //设置消费者状态默认为激活状态  值为1
        user.setStatus(Constants.USER_ACTIVE);
        //初始化用户角色为激活状态
        user.setRole(Constants.ROLE_CUSTOMER);
        //初始化，消费者随机激活码
        user.setCode(RandomUtils.createActive());
        //调用dao层进行添加操作
        UserDao userDao=new UserDaoImpl();
        int count = userDao.addUser(user);//添加消费者用户
        return count;
    }
}
